<!DOCTYPE html>
<html lang="en-US" dir="ltr">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>九问Blog</title>
    <meta name="description" content="欢迎访问九问Blog！分享一些Python全栈开发以及爬虫技术，希望对你有所帮助">
    <meta name="generator" content="VitePress v1.6.4">
    <link rel="preload stylesheet" href="/assets/style.DFMv0UyT.css" as="style">
    <link rel="preload stylesheet" href="/vp-icons.css" as="style">
    
    <script type="module" src="/assets/app.FY3_6mXQ.js"></script>
    <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
    <link rel="modulepreload" href="/assets/chunks/theme.C5KTugK_.js">
    <link rel="modulepreload" href="/assets/chunks/framework.CKMM7nwK.js">
    <link rel="modulepreload" href="/assets/其他_八股_其他_汇编_宏汇编.md.2UfLWMAK.lean.js">
    <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
    <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
  </head>
  <body>
    <div id="app"><!--[--><div class="Layout" data-v-5d98c3a5><!--[--><!--]--><!--[--><span tabindex="-1" data-v-0b0ada53></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-0b0ada53>Skip to content</a><!--]--><!----><header class="VPNav" data-v-5d98c3a5 data-v-ae24b3ad><div class="VPNavBar" data-v-ae24b3ad data-v-6aa21345><div class="wrapper" data-v-6aa21345><div class="container" data-v-6aa21345><div class="title" data-v-6aa21345><div class="VPNavBarTitle has-sidebar" data-v-6aa21345 data-v-1168a8e4><a class="title" href="/" data-v-1168a8e4><!--[--><!--]--><!----><span data-v-1168a8e4>九问Blog</span><!--[--><!--]--></a></div></div><div class="content" data-v-6aa21345><div class="content-body" data-v-6aa21345><!--[--><!--]--><div class="VPNavBarSearch search" data-v-6aa21345><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-6aa21345 data-v-dc692963><span id="main-nav-aria-label" class="visually-hidden" data-v-dc692963> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/%E5%B7%A5%E5%85%B7/Git/%E5%90%8C%E6%97%B6%E6%8E%A8%E9%80%81Gitee%E5%92%8CGitHub.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>工具</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/Linux/Linux%E5%9F%BA%E7%A1%80%E5%85%A5%E9%97%A8.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Linux</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/%E7%88%AC%E8%99%AB/%E5%AF%BC%E8%AE%BA.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>爬虫</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/%E6%B5%8B%E8%AF%95/faker%E6%95%B0%E6%8D%AE%E9%9A%8F%E6%9C%BA%E7%94%9F%E6%88%90.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>测试</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/Python/%E5%8E%9F%E7%90%86%E7%B1%BB/%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Python</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/Python%E6%A1%86%E6%9E%B6/Django/%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>Python框架</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/Linux.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>其他</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/%E5%89%8D%E7%AB%AF/Vue3/axios.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>前端</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/LLM/LangChain/quick_start.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>LLM</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/docker/mysql.html" tabindex="0" data-v-dc692963 data-v-e56f3d57><!--[--><span data-v-e56f3d57>环境搭建</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-6aa21345 data-v-6c893767><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-6c893767 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-6aa21345 data-v-0394ad82 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://github.com/jiuwen567" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-bd121fe5><span class="vpi-social-github"></span></a><a class="VPSocialLink no-icon" href="https://gitee.com/jiuwen567" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-bd121fe5><svg t="1724307958358" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4234" width="200" height="200"><path d="M512 0C230.4 0 0 230.4 0 512s230.4 512 512 512 512-230.4 512-512S793.6 0 512 0z m284.8 313.6c0 12.8-12.8 25.6-25.6 25.6H416c-41.6 0-76.8 35.2-76.8 76.8v243.2c0 12.8 12.8 25.6 25.6 25.6h240c41.6 0 76.8-35.2 76.8-76.8v-12.8c0-12.8-12.8-25.6-25.6-25.6H480c-12.8 0-25.6-12.8-25.6-25.6v-64c0-12.8 12.8-25.6 25.6-25.6h291.2c12.8 0 25.6 12.8 25.6 25.6v144c0 92.8-76.8 169.6-169.6 169.6H252.8c-12.8 0-25.6-12.8-25.6-25.6V412.8C227.2 310.4 310.4 224 416 224h355.2c12.8 0 25.6 12.8 25.6 25.6v64z" fill="#B32225" p-id="4235"></path></svg></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-6aa21345 data-v-bb2aa2f0 data-v-cf11d7a2><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-cf11d7a2><span class="vpi-more-horizontal icon" data-v-cf11d7a2></span></button><div class="menu" data-v-cf11d7a2><div class="VPMenu" data-v-cf11d7a2 data-v-b98bc113><!----><!--[--><!--[--><!----><div class="group" data-v-bb2aa2f0><div class="item appearance" data-v-bb2aa2f0><p class="label" data-v-bb2aa2f0>主题</p><div class="appearance-action" data-v-bb2aa2f0><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-bb2aa2f0 data-v-5337faa4 data-v-1d5665e3><span class="check" data-v-1d5665e3><span class="icon" data-v-1d5665e3><!--[--><span class="vpi-sun sun" data-v-5337faa4></span><span class="vpi-moon moon" data-v-5337faa4></span><!--]--></span></span></button></div></div></div><div class="group" data-v-bb2aa2f0><div class="item social-links" data-v-bb2aa2f0><div class="VPSocialLinks social-links-list" data-v-bb2aa2f0 data-v-7bc22406><!--[--><a class="VPSocialLink no-icon" href="https://github.com/jiuwen567" aria-label="github" target="_blank" rel="noopener" data-v-7bc22406 data-v-bd121fe5><span class="vpi-social-github"></span></a><a class="VPSocialLink no-icon" href="https://gitee.com/jiuwen567" aria-label target="_blank" rel="noopener" data-v-7bc22406 data-v-bd121fe5><svg t="1724307958358" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4234" width="200" height="200"><path d="M512 0C230.4 0 0 230.4 0 512s230.4 512 512 512 512-230.4 512-512S793.6 0 512 0z m284.8 313.6c0 12.8-12.8 25.6-25.6 25.6H416c-41.6 0-76.8 35.2-76.8 76.8v243.2c0 12.8 12.8 25.6 25.6 25.6h240c41.6 0 76.8-35.2 76.8-76.8v-12.8c0-12.8-12.8-25.6-25.6-25.6H480c-12.8 0-25.6-12.8-25.6-25.6v-64c0-12.8 12.8-25.6 25.6-25.6h291.2c12.8 0 25.6 12.8 25.6 25.6v144c0 92.8-76.8 169.6-169.6 169.6H252.8c-12.8 0-25.6-12.8-25.6-25.6V412.8C227.2 310.4 310.4 224 416 224h355.2c12.8 0 25.6 12.8 25.6 25.6v64z" fill="#B32225" p-id="4235"></path></svg></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-6aa21345 data-v-e5dd9c1c><span class="container" data-v-e5dd9c1c><span class="top" data-v-e5dd9c1c></span><span class="middle" data-v-e5dd9c1c></span><span class="bottom" data-v-e5dd9c1c></span></span></button></div></div></div></div><div class="divider" data-v-6aa21345><div class="divider-line" data-v-6aa21345></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-5d98c3a5 data-v-a6f0e41e><div class="container" data-v-a6f0e41e><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-a6f0e41e><span class="vpi-align-left menu-icon" data-v-a6f0e41e></span><span class="menu-text" data-v-a6f0e41e>菜单</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-a6f0e41e data-v-8a42e2b4><button data-v-8a42e2b4>回到顶部</button><!----></div></div></div><aside class="VPSidebar" data-v-5d98c3a5 data-v-319d5ca6><div class="curtain" data-v-319d5ca6></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-319d5ca6><span class="visually-hidden" id="sidebar-aria-label" data-v-319d5ca6> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 collapsible" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>面经</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E9%9D%A2%E7%BB%8F/%E5%A4%A7%E7%96%86.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>大疆</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E9%9D%A2%E7%BB%8F/%E5%B7%AE%E6%97%851%E5%8F%B7.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>差旅1号</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E9%9D%A2%E7%BB%8F/%E5%B9%BF%E5%B7%9E%E5%98%89%E4%B8%BA%E7%A7%91%E6%8A%80%E5%85%AC%E5%8F%B8-python.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>广州嘉为科技公司-python</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E9%9D%A2%E7%BB%8F/%E5%BE%97%E7%89%A9.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>得物</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E9%9D%A2%E7%BB%8F/%E6%8B%9B%E5%95%86%E9%93%B6%E8%A1%8C.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>招商银行</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E9%9D%A2%E7%BB%8F/%E7%99%BE%E5%BA%A6.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>百度</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 collapsible has-active" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>八股</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/Linux.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Linux</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-1 collapsible" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h3 class="text" data-v-b3fd67f8>前端</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E5%89%8D%E7%AB%AF/%E4%BA%8B%E4%BB%B6%E5%BE%AA%E7%8E%AF&amp;%E5%BC%82%E6%AD%A5.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>事件循环&异步</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-2 collapsible" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h4 class="text" data-v-b3fd67f8>HTML</h4><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E5%89%8D%E7%AB%AF/HTML/%E6%96%87%E6%A1%A3%E5%A3%B0%E6%98%8E.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>文档声明</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E5%89%8D%E7%AB%AF/HTML/%E6%9B%BF%E6%8D%A2%E5%85%83%E7%B4%A0.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>替换元素</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E5%89%8D%E7%AB%AF/HTML/%E8%AF%AD%E4%B9%89%E5%8C%96&amp;SEO&amp;%E5%BE%AE%E6%A0%BC%E5%BC%8F.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>语义化&SEO&微格式</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E5%89%8D%E7%AB%AF/HTML/%E9%A1%B5%E9%9D%A2%E5%8F%AF%E8%A7%81%E6%80%A7.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>页面可见性</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-2 collapsible" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h4 class="text" data-v-b3fd67f8>CSS</h4><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E5%89%8D%E7%AB%AF/CSS/%E5%8D%95%E4%BD%8D.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>单位</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E5%89%8D%E7%AB%AF/CSS/%E5%B1%85%E4%B8%AD%E7%9A%84%E6%96%B9%E5%BC%8F.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>居中的方式</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section><section class="VPSidebarItem level-1 collapsible" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h3 class="text" data-v-b3fd67f8>数据库</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%95%B0%E6%8D%AE%E5%BA%93/log.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>log</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%95%B0%E6%8D%AE%E5%BA%93/mysql%E7%9A%84%E6%89%A7%E8%A1%8C%E5%BC%95%E6%93%8E.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>mysql的执行引擎</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%95%B0%E6%8D%AE%E5%BA%93/redis.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>redis</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%95%B0%E6%8D%AE%E5%BA%93/sql%E8%AF%AD%E5%8F%A5%E7%9A%84%E6%89%A7%E8%A1%8C.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>sql语句的执行</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%95%B0%E6%8D%AE%E5%BA%93/%E6%85%A2%E6%9F%A5%E8%AF%A2.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>慢查询</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%95%B0%E6%8D%AE%E5%BA%93/%E7%B4%A2%E5%BC%95%E5%A4%B1%E6%95%88%E7%9A%84%E5%9C%BA%E6%99%AF.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>索引失效的场景</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-2 collapsible" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h4 class="text" data-v-b3fd67f8>事务</h4><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%95%B0%E6%8D%AE%E5%BA%93/%E4%BA%8B%E5%8A%A1/%E4%BA%8B%E5%8A%A1%E7%9A%84%E5%9B%9B%E5%A4%A7%E7%89%B9%E6%80%A7.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>事务的四大特性</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%95%B0%E6%8D%AE%E5%BA%93/%E4%BA%8B%E5%8A%A1/%E4%BA%8B%E5%8A%A1%E7%9A%84%E9%9A%94%E7%A6%BB%E7%BA%A7%E5%88%AB.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>事务的隔离级别</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-2 collapsible" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h4 class="text" data-v-b3fd67f8>进阶</h4><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%95%B0%E6%8D%AE%E5%BA%93/%E8%BF%9B%E9%98%B6/%E7%AA%97%E5%8F%A3%E5%87%BD%E6%95%B0.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>窗口函数</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section><section class="VPSidebarItem level-1 collapsible" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h3 class="text" data-v-b3fd67f8>测开</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%B5%8B%E5%BC%80/bug.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>bug</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%B5%8B%E5%BC%80/%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>性能测试</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%B5%8B%E5%BC%80/%E6%B5%8B%E8%AF%95%E7%9A%84%E6%B5%81%E7%A8%8B.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>测试的流程</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%B5%8B%E5%BC%80/%E6%B5%8B%E8%AF%95%E7%9A%84%E7%90%86%E8%A7%A3.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>测试的理解</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%B5%8B%E5%BC%80/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>软件测试</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%B5%8B%E5%BC%80/%E8%BD%AF%E4%BB%B6%E8%B4%A8%E9%87%8F.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>软件质量</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h3 class="text" data-v-b3fd67f8>数据结构</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E4%BA%8C%E5%88%86%E6%B3%95.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>二分法</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E4%BA%8C%E5%8F%89%E6%A0%91.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>二叉树</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E5%9B%9E%E6%BA%AF.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>回溯</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E6%9C%80%E5%A4%A7%E5%80%BC.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>滑动窗口最大值</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-2 collapsible" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h4 class="text" data-v-b3fd67f8>数组</h4><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E6%95%B0%E7%BB%84/%E8%9B%87%E5%BD%A2%E5%A1%AB%E6%95%B0.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>蛇形填数</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-2 collapsible" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h4 class="text" data-v-b3fd67f8>背包</h4><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E8%83%8C%E5%8C%85/01%E8%83%8C%E5%8C%85.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>01背包</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-2 collapsible" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h4 class="text" data-v-b3fd67f8>链表</h4><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E9%93%BE%E8%A1%A8/%E4%B8%A4%E4%B8%A4%E4%BA%A4%E6%8D%A2%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>两两交换链表中的节点</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E9%93%BE%E8%A1%A8/%E5%8D%95%E9%93%BE%E8%A1%A8.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>单链表</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/%E9%93%BE%E8%A1%A8/%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>反转链表</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section><section class="VPSidebarItem level-1 collapsible" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h3 class="text" data-v-b3fd67f8>计网</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E8%AE%A1%E7%BD%91/CDN.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>CDN</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E8%AE%A1%E7%BD%91/cookie&amp;session.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>cookie&session</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E8%AE%A1%E7%BD%91/DNS%E6%9F%A5%E8%AF%A2%E8%BF%87%E7%A8%8B.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>DNS查询过程</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E8%AE%A1%E7%BD%91/http%E5%B8%B8%E8%A7%81%E7%8A%B6%E6%80%81%E7%A0%81.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>http常见状态码</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E8%AE%A1%E7%BD%91/OSI%E6%A8%A1%E5%9E%8B.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>OSI模型</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E8%AE%A1%E7%BD%91/url%E5%88%B0%E9%A1%B5%E9%9D%A2%E5%B1%95%E7%A4%BA.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>url到页面展示</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E8%AE%A1%E7%BD%91/%E5%BC%BA%E7%BC%93%E5%AD%98%E5%92%8C%E5%8D%8F%E5%95%86%E7%BC%93%E5%AD%98.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>强缓存和协商缓存</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-2 collapsible" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h4 class="text" data-v-b3fd67f8>传输层</h4><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E8%AE%A1%E7%BD%91/%E4%BC%A0%E8%BE%93%E5%B1%82/TCP&amp;UDP.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>TCP&UDP</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-2 collapsible" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h4 class="text" data-v-b3fd67f8>物理层</h4><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E8%AE%A1%E7%BD%91/%E7%89%A9%E7%90%86%E5%B1%82/%E5%A5%88%E6%B0%8F%E5%87%86%E5%88%99&amp;%E9%A6%99%E5%86%9C%E5%85%AC%E5%BC%8F.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>奈氏准则&香农公式</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-2 collapsible" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h4 class="text" data-v-b3fd67f8>应用层</h4><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E8%AE%A1%E7%BD%91/%E5%BA%94%E7%94%A8%E5%B1%82/http&amp;https.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>http&https</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E8%AE%A1%E7%BD%91/%E5%BA%94%E7%94%A8%E5%B1%82/http.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>http</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E8%AE%A1%E7%BD%91/%E5%BA%94%E7%94%A8%E5%B1%82/http1.0%E5%90%84%E4%B8%AA%E7%89%88%E6%9C%AC.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>http1.0各个版本</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section><section class="VPSidebarItem level-1 collapsible" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h3 class="text" data-v-b3fd67f8>操作系统</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E5%AD%98%E5%82%A8%E7%AE%A1%E7%90%86.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>存储管理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%AE%89%E5%85%A8%E5%8F%8A%E8%99%9A%E6%8B%9F%E5%8C%96%E6%8A%80%E6%9C%AF%E6%A6%82%E8%BF%B0.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>操作系统安全及虚拟化技术概述</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E6%A6%82%E8%BF%B0%E5%8F%8A%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>操作系统概述及基本概念</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>文件系统</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E6%AD%BB%E9%94%81.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>死锁</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>输入输出</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E8%BF%9B%E7%A8%8B%E4%B8%8E%E7%BA%BF%E7%A8%8B.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>进程与线程</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E9%9D%A2%E8%AF%95%E5%85%AB%E8%82%A1.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>面试八股</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible has-active" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h3 class="text" data-v-b3fd67f8>其他</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><section class="VPSidebarItem level-2 collapsible has-active" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h4 class="text" data-v-b3fd67f8>汇编</h4><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E5%85%B6%E4%BB%96/%E6%B1%87%E7%BC%96/%E4%B8%B2%E6%8C%87%E4%BB%A4.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>串指令</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E5%85%B6%E4%BB%96/%E6%B1%87%E7%BC%96/%E5%89%8D%E7%BD%AE%E7%9F%A5%E8%AF%86.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>前置知识</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E5%85%B6%E4%BB%96/%E6%B1%87%E7%BC%96/%E5%AE%8F%E6%B1%87%E7%BC%96.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>宏汇编</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E5%85%B6%E4%BB%96/%E6%B1%87%E7%BC%96/%E5%AF%84%E5%AD%98%E5%99%A8.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>寄存器</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E5%85%B6%E4%BB%96/%E6%B1%87%E7%BC%96/%E5%AF%BB%E5%9D%80%E6%96%B9%E5%BC%8F.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>寻址方式</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E5%85%B6%E4%BB%96/%E6%B1%87%E7%BC%96/%E6%95%B0%E6%8D%AE%E4%BC%A0%E9%80%81%E6%8C%87%E4%BB%A4.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>数据传送指令</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E5%85%B6%E4%BB%96/%E6%B1%87%E7%BC%96/%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E7%BB%BC%E5%90%88.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>程序设计综合</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E5%85%B6%E4%BB%96/%E6%B1%87%E7%BC%96/%E9%80%BB%E8%BE%91%E8%BF%90%E7%AE%97%E4%B8%8E%E7%A7%BB%E4%BD%8D%E6%8C%87%E4%BB%A4.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>逻辑运算与移位指令</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-2 collapsible" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h4 class="text" data-v-b3fd67f8>网安</h4><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E5%85%B6%E4%BB%96/%E7%BD%91%E5%AE%89/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>网络安全</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section><!--]--></div></section></div><div class="no-transition group" data-v-c40bc020><section class="VPSidebarItem level-0 collapsible" data-v-c40bc020 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h2 class="text" data-v-b3fd67f8>项目</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><section class="VPSidebarItem level-1 collapsible" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h3 class="text" data-v-b3fd67f8>项目部署</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-2 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E9%A1%B9%E7%9B%AE/%E9%A1%B9%E7%9B%AE%E9%83%A8%E7%BD%B2/web.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>web</p><!--]--></a><!----></div><!----></div><section class="VPSidebarItem level-2 collapsible" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" role="button" tabindex="0" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><h4 class="text" data-v-b3fd67f8>vitepress</h4><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-b3fd67f8><span class="vpi-chevron-right caret-icon" data-v-b3fd67f8></span></div></div><div class="items" data-v-b3fd67f8><!--[--><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E9%A1%B9%E7%9B%AE/%E9%A1%B9%E7%9B%AE%E9%83%A8%E7%BD%B2/vitepress/GithubPages%E9%83%A8%E7%BD%B2.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>GithubPages部署</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E9%A1%B9%E7%9B%AE/%E9%A1%B9%E7%9B%AE%E9%83%A8%E7%BD%B2/vitepress/netlify%E9%83%A8%E7%BD%B2.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>netlify部署</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-3 is-link" data-v-b3fd67f8 data-v-b3fd67f8><div class="item" data-v-b3fd67f8><div class="indicator" data-v-b3fd67f8></div><a class="VPLink link link" href="/%E5%85%B6%E4%BB%96/%E9%A1%B9%E7%9B%AE/%E9%A1%B9%E7%9B%AE%E9%83%A8%E7%BD%B2/vitepress/Nginx%E9%83%A8%E7%BD%B2.html" data-v-b3fd67f8><!--[--><p class="text" data-v-b3fd67f8>Nginx部署</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-5d98c3a5 data-v-1428d186><div class="VPDoc has-sidebar has-aside" data-v-1428d186 data-v-39a288b8><!--[--><!--]--><div class="container" data-v-39a288b8><div class="aside" data-v-39a288b8><div class="aside-curtain" data-v-39a288b8></div><div class="aside-container" data-v-39a288b8><div class="aside-content" data-v-39a288b8><div class="VPDocAside" data-v-39a288b8 data-v-3f215769><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-3f215769 data-v-a5bbad30><div class="content" data-v-a5bbad30><div class="outline-marker" data-v-a5bbad30></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-a5bbad30>On this page</div><ul class="VPDocOutlineItem root" data-v-a5bbad30 data-v-b933a997><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-3f215769></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-39a288b8><div class="content-container" data-v-39a288b8><!--[--><!--]--><main class="main" data-v-39a288b8><div style="position:relative;" class="vp-doc _%E5%85%B6%E4%BB%96_%E5%85%AB%E8%82%A1_%E5%85%B6%E4%BB%96_%E6%B1%87%E7%BC%96_%E5%AE%8F%E6%B1%87%E7%BC%96" data-v-39a288b8><div><h2 id="汇编语言源程序到可执行文件的处理过程" tabindex="-1">汇编语言源程序到可执行文件的处理过程 <a class="header-anchor" href="#汇编语言源程序到可执行文件的处理过程" aria-label="Permalink to &quot;汇编语言源程序到可执行文件的处理过程&quot;">​</a></h2><p><img src="https://typora5672.oss-cn-chengdu.aliyuncs.com/temp/image-20241224153647815.png" alt="image-20241224153647815"></p><ol><li>用编辑程序建立以ASM为后缀名的源文件。</li><li>用汇编程序(MASM.EXE)把源文件转换成OBJ 目标文件。</li><li>用连接程序(LINK.EXE)把目标文件转换成EXE 执行文件。</li><li>用DOS命令方式直接键入文件名，执行</li></ol><ul><li><p>asm或.c：</p></li><li><p>.obj：由机器指令代码构成</p></li><li><p>.exe或.com：一个完整的可执行文件</p></li></ul><h3 id="exe文件的内存映象" tabindex="-1">EXE文件的内存映象 <a class="header-anchor" href="#exe文件的内存映象" aria-label="Permalink to &quot;EXE文件的内存映象&quot;">​</a></h3><p><img src="https://typora5672.oss-cn-chengdu.aliyuncs.com/temp/image-20241230221544007.png" alt="image-20241230221544007"></p><h2 id="伪指令" tabindex="-1">伪指令 <a class="header-anchor" href="#伪指令" aria-label="Permalink to &quot;伪指令&quot;">​</a></h2><blockquote><p>伪指令，又称为伪语句，是汇编语言提供的指示性语言，为汇编程序和连接程序提供信息。</p><p>伪指令本身不占用内存单元，它们的功能是在汇编和连接时由相应的软件完成的</p></blockquote><h3 id="常量、变量与表达式" tabindex="-1">常量、变量与表达式 <a class="header-anchor" href="#常量、变量与表达式" aria-label="Permalink to &quot;常量、变量与表达式&quot;">​</a></h3><h4 id="常量" tabindex="-1">常量 <a class="header-anchor" href="#常量" aria-label="Permalink to &quot;常量&quot;">​</a></h4><blockquote><p>常量包括立即数、字符串常数和符号常数。</p></blockquote><ol><li><p>立即数</p><ul><li>如：125，125D，0A9H，10101010B， 11Q，－200。</li><li>立即数的数制用在数字之后添加后缀字母来表示， 后缀‘D’(或者缺省)表示十进制数，后缀‘H’表示 十六进制数，后缀‘B’表示二进制数，后缀‘Q’表 示八进制数。</li><li>立即数必须以数字开头，以字母A-F开头的十六进 制数必须加前缀数字0。</li><li>经过汇编之后，汇编程序将把各种进制表示的立即 数全部转换成等值的二进制数，负数转换成补码。</li></ul></li><li><p>字符/字符串常数</p><ul><li>用单引号括起来的字符串称为字符串常数。 如‘A’，‘A1B2C3’。</li><li>经过汇编之后，单引号中的每个字符将被转 换成相应的ASCII码，可以像使用立即数一样 使用它们。</li><li>eg: MOV AL，‘A’ ；寻址方式？AL = 41H</li></ul></li><li><p>符号常数</p><ul><li><p>符号常数用等值伪指令“EQU”或者等号伪指令 “＝”定义。</p></li><li><p>使用符号常数有利于程序调试，增加程序的可读性。</p></li><li><p>符号常数经过定义之后，实际上作为立即数使用。</p></li><li><p>eg:</p><div class="language-assembly vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">assembly</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>PI   EQU   314</span></span>
<span class="line"><span>X = 100</span></span>
<span class="line"><span>MOV AX，PI    ;AX＝314</span></span>
<span class="line"><span>MOV DX，X     ;DX = 100</span></span></code></pre></div></li><li><p>符号常数不同于符号地址、是：立即数！(类似于 #define )</p></li><li><p>符号地址本质上是地址。</p></li><li><p>等值伪指令<code>EQU</code>和等号伪指令<code>=</code>的区别</p><ul><li>用EQU伪指令定义的符号常数，其值 在后续的程序中不能更改(能够避免程序员无意间重 复定义符号名) ；用等号伪指令定义的符号常数，在 后续的程序中可以重新定义，从而达到修改所定义 的符号常数的目的</li></ul></li></ul></li></ol><h3 id="符号地址" tabindex="-1">符号地址 <a class="header-anchor" href="#符号地址" aria-label="Permalink to &quot;符号地址&quot;">​</a></h3><ul><li>变量：代表内存操作数所在存储单元的存储地址， 或者说变量名就代表某个存储单元。</li><li>标号：代表指令所在存储单元的存储地址，它为转移指令提供了转移目标。</li><li>标号被定义在代码段，变量通常被定义在数据段、附加段或堆栈段。</li><li>由于标号和变量是用一串字符命名的，从这个意义上讲，变量和标号可以统称为符号地址。</li><li>理解：包括子程序名、段名皆是如此！</li><li>作为符号地址，具有共同的3个属性。 <ul><li>段属性。即标号或变量所在段的段基址， 用SEG运算符可以计算得到。</li><li>偏移属性。即标号或变量所代表的存储单 元，相对于段基址之间的偏移地址(或称有效地址)，用OFFSET运算符可以计算得到。</li><li>类型属性 <ul><li>变量的长度类型属性有字节型、字型、双字 型、四字型等等</li><li>用DB伪指令定义的变量，其所属的单元均为 字节型</li><li>用DW，DD，DQ伪指令定义的变量，其所属 的单元分别有字型、双字型和四字型属性</li></ul></li></ul></li></ul><h3 id="返回属性或数值的运算符" tabindex="-1">返回属性或数值的运算符 <a class="header-anchor" href="#返回属性或数值的运算符" aria-label="Permalink to &quot;返回属性或数值的运算符&quot;">​</a></h3><ol><li><p>SEG运算符</p><ul><li><p><code>SEG 段名</code></p></li><li><p>功能:计算某个逻辑段的段基址。</p></li><li><div class="language-assembly vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">assembly</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>MOV  AX，SEG  DATA</span></span>
<span class="line"><span>MOV  DS，AX</span></span></code></pre></div></li><li><p>后跟段名时，SEG运算符可以省略。</p></li><li><p>SEG实际上也可以针对该逻辑段中任意一 个符号地址：变量名、标号(已验证！)或者子程序名进行计算</p></li></ul></li><li><p>OFFSET运算符</p><ul><li><p><code>OFFSET 变量名或者标号名</code></p></li><li><p>功能:计算变量名或者标号名代表的存储单元 相对于所在段的段基址的偏移/有效地址。</p></li><li><div class="language-assembly vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">assembly</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>BUF  DB   12，34，56</span></span>
<span class="line"><span>……</span></span>
<span class="line"><span>MOV  AX， SEG 数据段的段名</span></span>
<span class="line"><span>MOV  DS， AX</span></span>
<span class="line"><span>MOV  BX，OFFSET BUF</span></span>
<span class="line"><span>MOV  AL，DS:[BX]</span></span></code></pre></div><ul><li>首先求出BUF的偏移地址并赋给BX，然后对 BX间址取数送到AL，所以(AL)=12。</li></ul></li><li><p>如果仅仅只需访问一个特定的存储单元，那 么最后两条语句可以合并为MOV AL，DS:[BUF]</p></li><li><p>实际上为了利用循环程序处理连续多个存储 单元的数据，经常采用[ BX ]这种寄存器间接寻址的 做法。</p></li></ul></li></ol><h3 id="修改类型属性的运算符ptr" tabindex="-1">修改类型属性的运算符PTR <a class="header-anchor" href="#修改类型属性的运算符ptr" aria-label="Permalink to &quot;修改类型属性的运算符PTR&quot;">​</a></h3><p><code>类型说明符 PTR 符号地址</code></p><ol><li>其中类型说明符包括：</li></ol><ul><li>变量名时：BYTE(字节)，WORD(字)，DWORD(双 字)；</li><li>标号或子程序名时：FAR(远)，NEAR(近)。</li></ul><ol start="2"><li>变量名具有默认的类型属性。 <ul><li>eg:使用DB ABC定义：变量名ABC为字节类型 <ul><li>MOV DS:[BX],12H ；错误 因为无法指明操作数的长度类型</li><li>MOV DS:[ABC],12H ；正确</li></ul></li></ul></li><li>程序中可能出现不匹配的情况，此时：可以 使用PTR运算符：临时修改变量名的类型属性。 <ul><li>eg: 已经指明ABC为字节类型的变量名， <ul><li>那么： MOV AX, ABC ；错</li><li>MOV AX , WORD PTR ABC ；对</li></ul></li></ul></li></ol><h3 id="type运算符" tabindex="-1">TYPE运算符 <a class="header-anchor" href="#type运算符" aria-label="Permalink to &quot;TYPE运算符&quot;">​</a></h3><p><code> TYPE 变量名或者标号名</code></p><ul><li>功能:计算变量或者标号的类型。</li><li>对于字节、字或双字型的变量名返回的值分 别为：1，2，4。</li><li>于NEAR和FAR型的标号分别返回-1，-2.</li></ul><h3 id="数据-变量定义伪指令" tabindex="-1">数据/变量定义伪指令 <a class="header-anchor" href="#数据-变量定义伪指令" aria-label="Permalink to &quot;数据/变量定义伪指令&quot;">​</a></h3><blockquote><p>此类指令的核心功能是：要求编译程序为用户程序分配若干存储单元</p><p>注意：此类伪指令前面可以为存储单元定义变量名。</p></blockquote><h4 id="字节定义伪指令" tabindex="-1">字节定义伪指令 <a class="header-anchor" href="#字节定义伪指令" aria-label="Permalink to &quot;字节定义伪指令&quot;">​</a></h4><p><code> [变量名] DB 一串用逗号间隔的字节型数据</code></p><h5 id="eg1" tabindex="-1">eg1 <a class="header-anchor" href="#eg1" aria-label="Permalink to &quot;eg1&quot;">​</a></h5><ul><li><div class="language-assembly vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">assembly</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>BUF1  DB  55，66H，7*7</span></span>
<span class="line"><span>DB    ?,?</span></span></code></pre></div></li><li><p>DB是Define Byte的缩写,DB伪指令定义的变量名及存储单元的默认属性为 “字节型”。</p></li><li><p><code>*</code>操作 由 由汇编编译器完成</p></li><li><p><code>？</code>代表随机数</p></li></ul><h5 id="eg2" tabindex="-1">eg2 <a class="header-anchor" href="#eg2" aria-label="Permalink to &quot;eg2&quot;">​</a></h5><div class="language-assembly vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">assembly</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>BUF1  DB  55,66H7*7</span></span>
<span class="line"><span>DB    ？，？</span></span>
<span class="line"><span>COUNT1 EQU   $ - BUF1 ;COUNT1为？</span></span>
<span class="line"><span>BUF2   DB  10 DUP( 12H, 2 DUP (12, 34))</span></span>
<span class="line"><span>COUNT2   EQU   $ - BUF2 ;COUNT2为？</span></span>
<span class="line"><span>COUNT3   EQU   $ - BUF1 ;COUNT3为？</span></span></code></pre></div><ul><li>DUP是Duplicate的缩写，翻译为“重复”，DUP左边是 重复系数，右边圆括号中为需要重复设置的数据。DUP操作 符可以嵌套使用</li><li>$运算符的含义：汇编过程中，地址计数器中的内容(地址的当前值)。最常见的用法：与符号常数定义伪指令配合，紧 跟在数据定义伪指令之后，用于统计从某个变量地址开始、 至当前指令为止，所分配的存储单元数目(经常用于循环程序的次数)。</li><li><code>COUNT1 = 5</code>（<code>BUF1</code> 总共 5 个字节）</li><li><code>COUNT2 = 50</code>（<code>BUF2</code> 总共 30 个字节）</li><li><code>COUNT3 = 5 + 50 = 55</code>（<code>BUF1</code> 和 <code>BUF2</code> 总共 55 个字节）</li><li><code>COUNT1</code> 不是一个变量名,不会分配存储单元，它只是一个符号常量，在汇编时由汇编器替换为其值。</li></ul><h4 id="字定义伪指令" tabindex="-1">字定义伪指令 <a class="header-anchor" href="#字定义伪指令" aria-label="Permalink to &quot;字定义伪指令&quot;">​</a></h4><p><code>[变量名] DW 一串用逗号间隔的双字节数</code></p><ul><li><p>DW是Defined Word的缩写，DW伪指令的功能是 通知汇编程序，把所定义的双字节数从指定变量开 始依次存放，每一个双字节数的存放规律是：低位字节存入低地址单元(i单元)，高位字节存入高地址 单元(i+1单元)。</p></li><li><p>出现在DW伪指令中的字符串常数，单引号中只能是一个或两个字符。</p></li><li><p><code>WNUM DW 1234H，56，’AB’，’C’，?</code>经汇编之后，WNUM~WNUM+9存储单 元中存放数据的次序依次是34H，12H，38H，00H，42H，41H，43H， 00H，××，××。</p><ul><li><code>MOV AL, BYTE PTR WNUM+1 </code>AL = 12H</li><li><code>MOV AX, WNUM+1</code> AX = 3812H</li><li><code>WNUM+1</code>只会加1字节</li></ul></li></ul><h4 id="运算符" tabindex="-1">$运算符 <a class="header-anchor" href="#运算符" aria-label="Permalink to &quot;$运算符&quot;">​</a></h4><ul><li>在汇编程序对源程序汇编的过程中,使用地址计数器 来保存当前正在汇编的指令的地址</li><li>地址计数器的值可用$来表示,汇编语言允许用户直 接用$来引用地址计数器的值</li><li>汇编语言程序中，符号“$”表示当前偏移地址值</li><li><code>JMP $-3</code><ul><li>$此处为JMP下一条指令地址， 假设该JMP指令长度为3。故：本指 令实际上跳转回JMP自身！</li><li>构造一个形式上的死循环，实际应用于一个无限循环的中断响应系统。</li></ul></li></ul><h4 id="双字定义伪指令" tabindex="-1">双字定义伪指令 <a class="header-anchor" href="#双字定义伪指令" aria-label="Permalink to &quot;双字定义伪指令&quot;">​</a></h4><p><code>变量名] DD一串用逗号间隔的4字节数</code></p><ul><li>通知汇编程序，把DD定义的数从指定 的变量名开始依次存放，每一数占4个单元， 每一个数的存放规律也是低位字节存入低地 址单元，较高字节存入较高的地址单元。</li></ul><h3 id="段约定语句" tabindex="-1">段约定语句 <a class="header-anchor" href="#段约定语句" aria-label="Permalink to &quot;段约定语句&quot;">​</a></h3><p><code>ASSUME 段寄存器：段名，…，段寄存器：段名</code></p><ul><li><p>例如：<code>ASSUME CS:CODE,DS:DATA</code></p></li><li><p>ASSUME语句是非执行的语句，要求放在代码 段之中、执行寻址操作之前；习惯上，把ASSUME 语句作为代码段的第1条语句</p></li><li><p>ASSUME没有实现初始化，部分段寄存器的初值必须在程序中用指令重新设置</p><ul><li><p>有两个办法可以设置段寄存器的初值</p><p>设DATA为数据段段名:</p><ul><li><p>使用SEG运算符求出逻辑段的段基址赋给段 寄存器，如:</p><p><code>MOV AX，SEG DATA </code></p><p><code>MOV DS，AX</code></p></li><li><p>省略SEG、直接把段名赋给段寄存器，如:</p><p><code>MOV AX，DATA </code></p><p><code>MOV DS，AX</code></p></li></ul></li></ul></li></ul><h2 id="dos系统功能调用" tabindex="-1">DOS系统功能调用 <a class="header-anchor" href="#dos系统功能调用" aria-label="Permalink to &quot;DOS系统功能调用&quot;">​</a></h2><p><code>MOV AH，功能号</code></p><p><code>设置入口参数 </code></p><p><code>INT 21H </code></p><p><code>分析出口参</code></p><ol><li><p>[功能号01H]键盘输入并回显</p><ul><li><p>等待用户从键盘上输入一个字符，有回显， 响应Ctrl-C。此调用的功能是系统扫描键盘 并等待键盘输入一个字符，有键按下时，先 检查是否是Ctrl-C键，若不是则将字符的键 值(ASCII码)送入AL寄存器中，并在屏幕上 显示该字符。</p></li><li><p>入口参数：无。</p></li><li><p>出口参数：AL=按键的ASCII码。</p></li><li><p>下列语句可实现键盘输入。</p><div class="language-assembly vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">assembly</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>MOV AH，01H        </span></span>
<span class="line"><span>INT 21H</span></span></code></pre></div></li></ul></li><li><p>[功能号02H]在显示器上显示一个字符，响应Ctrl-C。</p><ul><li><p>入口参数：DL=等待显示字符的ASCII码。</p></li><li><p>出口参数：无。</p></li><li><p>在屏幕上显示’A’符号</p><div class="language-assembly vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">assembly</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>MOV DL，’A’</span></span>
<span class="line"><span>MOV AH，02H</span></span>
<span class="line"><span>INT 21H</span></span></code></pre></div></li><li><p>实验表明，该功能会破坏AL寄存器的值。</p></li><li><p>可以使用不可显示的控制字符。例如，用于实现格式控制的换行(0DH)、回车 (0AH)字符等</p></li></ul></li><li><p>[功能号09H]显示字符串，响应Ctrl-C。</p><ul><li>入口参数：DS:DX=字符串首地址，即待输出 字符串的首字符的逻辑地址 <ul><li>字符串必须以字符‘$’作为结束标志，但’$’ 不会显示在屏幕上。</li></ul></li><li>出口参数：无。</li><li>实验表明，该功能会破坏AL寄存器的值，不 改变其余寄存器及标志寄存器的值。</li></ul></li><li><p>[功能号0AH]等待从键盘上输入一个字符串(必须以 回车符表示结束)，然后存入内存中的数据缓冲区。 有回显，响应Ctrl-C。</p></li></ol><ul><li><p>入口参数：①DS:DX=数据缓冲区首地址；②首字节单元指出允许最大输入的字符串长度(包含 回车符) 。</p></li><li><p>出口参数: ①在缓冲区第二个字节单元存放实际输入字符串的长度(不包含回车符)； ②从第三个字节单元开始存放实际的字符串，其中 一个存储单元存放回车符的ASCII码0DH(十进制的 13)。</p></li><li><p>如果输入的字符个数超过规定值，系统则会发出声 音警告信息。缓冲区不接收超长字符.</p></li><li><p><img src="https://typora5672.oss-cn-chengdu.aliyuncs.com/temp/image-20241226124722513.png" alt="image-20241226124722513"></p></li><li><p>用户键入回车之后，由0AH功能把实际键入 的字符个数(不包括回车符)写入BUF+1单元。</p></li><li><p>键入的字符串从BUF+2单元开始依次存放。 因此，缓冲区的容量要大于(或等于)键入串的 长度(包括回车符)+2</p></li><li><p>eg:</p><div class="language-assembly vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">assembly</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span> BUF  DB  15</span></span>
<span class="line"><span> DB   ?</span></span>
<span class="line"><span> DB 15 DUP(?)  </span></span>
<span class="line"><span>;或者 BUF   DB  15，?，15 DUP(?)</span></span>
<span class="line"><span></span></span>
<span class="line"><span>;允许用户输入14个字符，因为还有1个回车</span></span>
<span class="line"><span></span></span>
<span class="line"><span>MOV  AH，0AH</span></span>
<span class="line"><span>LEA  DX， BUF</span></span>
<span class="line"><span>INT   21H</span></span></code></pre></div></li></ul><ol start="5"><li><p>[功能号4CH]终止当前程序的运行，并把控制权转交给调用它的主程序。</p><ul><li><p>该项功能同时将程序用过的内存空间交还给DOS另 行分配，由被终止程序打开的全部文件都被关闭。</p></li><li><p>即：在用户程序末尾添加以下两条语句：</p><div class="language-assembly vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">assembly</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>MOV AH，4CH</span></span>
<span class="line"><span>INT 21H</span></span></code></pre></div></li></ul></li></ol><h2 id="宏指令" tabindex="-1">宏指令 <a class="header-anchor" href="#宏指令" aria-label="Permalink to &quot;宏指令&quot;">​</a></h2><blockquote><ul><li>宏指令在形式上是由程序员自己定义的新指令</li><li>但实质上是由CPU指令系统中多条真实指令构成的 一个集合。</li><li>宏指令执行的原理是：汇编时替换为真实指令集合， CPU依次执行宏指令所包含的各条指令语句。</li><li>宏指令分为无参数宏指令与有参数宏指令两种。</li><li>宏指令的定义语句可以放在逻辑段之外，通常都放 在程序的首部，但调用指令仍需放在代码段内。</li><li>对于宏指令，由于每一次宏调用都要进行宏展开， 把宏体中的内容复制一遍，因而用宏编写的程序在 目标代码中会重复出现相同或相似的程序段，占用 内存空间大；所以，频繁调用宏指令会增大目标程序的尺寸</li></ul></blockquote><h3 id="无参数宏指令" tabindex="-1">无参数宏指令 <a class="header-anchor" href="#无参数宏指令" aria-label="Permalink to &quot;无参数宏指令&quot;">​</a></h3><p>格式：</p><div class="language-assembly vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">assembly</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>宏指令名称  MACRO</span></span>
<span class="line"><span>		宏体</span></span>
<span class="line"><span>		ENDM</span></span></code></pre></div><p>eg-DOS功能调用:</p><div class="language-assembly vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">assembly</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>RETN MACRO</span></span>
<span class="line"><span> 	MOV  AH，2</span></span>
<span class="line"><span> 	MOV  DL，0DH</span></span>
<span class="line"><span> 	INT  21H</span></span>
<span class="line"><span> 	MOV  DL，0AH</span></span>
<span class="line"><span> 	INT  21H</span></span>
<span class="line"><span> 	ENDM</span></span></code></pre></div><h3 id="有参数宏指令" tabindex="-1">有参数宏指令 <a class="header-anchor" href="#有参数宏指令" aria-label="Permalink to &quot;有参数宏指令&quot;">​</a></h3><p>格式：</p><div class="language-assembly vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">assembly</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>宏指令名称  MACRO 哑元表</span></span>
<span class="line"><span>		宏体</span></span>
<span class="line"><span>		ENDM</span></span></code></pre></div><h3 id="条件汇编伪指令" tabindex="-1">条件汇编伪指令 <a class="header-anchor" href="#条件汇编伪指令" aria-label="Permalink to &quot;条件汇编伪指令&quot;">​</a></h3><p>格式：</p><div class="language-assembly vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">assembly</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>格式1:</span></span>
<span class="line"><span>	IF 条件格式</span></span>
<span class="line"><span>	指令集合</span></span>
<span class="line"><span>	ENDIF</span></span>
<span class="line"><span></span></span>
<span class="line"><span>格式2:</span></span>
<span class="line"><span>	IF 条件</span></span>
<span class="line"><span>	指令集合1</span></span>
<span class="line"><span>	ELSE </span></span>
<span class="line"><span>	指令集合2</span></span>
<span class="line"><span>	ENDIF</span></span></code></pre></div><h3 id="local伪指令" tabindex="-1">LOCAL伪指令 <a class="header-anchor" href="#local伪指令" aria-label="Permalink to &quot;LOCAL伪指令&quot;">​</a></h3><blockquote><p>避免标号在多次使用宏指令后重复</p></blockquote><ol><li><p>LOCAL伪指令要放在宏定义之中，是 MACRO定界语句以下的第1条语句</p></li><li><p>标号名表是用逗号间隔的一串标号名，它们是宏体中出现的所有标号的集合。</p></li></ol></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><a class="VPLink link pager-link prev" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E5%85%B6%E4%BB%96/%E6%B1%87%E7%BC%96/%E5%89%8D%E7%BD%AE%E7%9F%A5%E8%AF%86.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>上一篇</span><span class="title" data-v-e257564d>前置知识</span><!--]--></a></div><div class="pager" data-v-e257564d><a class="VPLink link pager-link next" href="/%E5%85%B6%E4%BB%96/%E5%85%AB%E8%82%A1/%E5%85%B6%E4%BB%96/%E6%B1%87%E7%BC%96/%E5%AF%84%E5%AD%98%E5%99%A8.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>下一篇</span><span class="title" data-v-e257564d>寄存器</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-5d98c3a5 data-v-e315a0ad><div class="container" data-v-e315a0ad><p class="message" data-v-e315a0ad>Released under the MIT License.</p><p class="copyright" data-v-e315a0ad>Copyright © 2024.8.15-present 九问.All Rights Reserved.</p></div></footer><!--[--><!--]--></div><!----><!----><!--]--></div>
    <script>window.__VP_HASH_MAP__=JSON.parse("{\"index.md\":\"DPLzomJ3\",\"linux_linux基础入门.md\":\"pHBVwgKW\",\"linux_常用命令备忘.md\":\"BjZbNsQB\",\"linux_虚拟机相关.md\":\"509DUbJA\",\"llm_langchain_lcel表达式与runnable可运行协议.md\":\"Do8svL8L\",\"llm_langchain_model.md\":\"BseancJn\",\"llm_langchain_outputparser.md\":\"Dy6NsY5B\",\"llm_langchain_prompt.md\":\"XqZSAhnf\",\"llm_langchain_quick_start.md\":\"BNcILzfr\",\"python_原理类_依赖注入.md\":\"CL2SMX95\",\"python_原理类_内存管理.md\":\"CPaxdydH\",\"python_原理类_单例模式.md\":\"sMUaVqEG\",\"python_原理类_多进程多线程协程.md\":\"DqpQdOiz\",\"python_原理类_深浅拷贝.md\":\"CLyf8bhf\",\"python_原理类_自省.md\":\"xlfwK7Qt\",\"python_原理类_迭代器和生成器.md\":\"CkWqBBDs\",\"python_原理类_闭包和装饰器.md\":\"DK3E-cjV\",\"python_原理类_高阶函数.md\":\"DCh-efV4\",\"python_原理类_魔法方法.md\":\"DmwyLFne\",\"python_原理类_鸭子类型.md\":\"5JGfCqIC\",\"python_基础_练习题.md\":\"CsgELmqe\",\"python_工具类_logging.md\":\"dWLhofea\",\"python框架_django_4-1环境搭建.md\":\"B6koVIdo\",\"python框架_django_4-2settings配置.md\":\"B6f707F-\",\"python框架_django_4-3路由定义与使用.md\":\"BD3-Rmv3\",\"python框架_django_4-4请求与响应.md\":\"n_ivviS2\",\"python框架_django_4-5session_cookie.md\":\"DAeZMmLC\",\"python框架_django_4-6类视图.md\":\"CC_0FUMu\",\"python框架_django_4-7模板引擎.md\":\"BdpQJw0a\",\"python框架_django_接口文档.md\":\"cRd_13f9\",\"python框架_django_熟悉流程_部署博客.md\":\"B4LDDwJF\",\"python框架_django_虚拟环境.md\":\"CANoJLNU\",\"python框架_flask_flask-sqlalchemy.md\":\"CUU_aFQd\",\"python框架_flask_flask-wtf_wtfforms.md\":\"LvJO-ZqI\",\"python框架_flask_start.md\":\"CEtxJVgY\",\"其他_八股_linux.md\":\"CJveVc64\",\"其他_八股_其他_汇编_串指令.md\":\"BttYJMTr\",\"其他_八股_其他_汇编_前置知识.md\":\"BucxfzEY\",\"其他_八股_其他_汇编_宏汇编.md\":\"2UfLWMAK\",\"其他_八股_其他_汇编_寄存器.md\":\"jp1xBRVS\",\"其他_八股_其他_汇编_寻址方式.md\":\"CewV_a8e\",\"其他_八股_其他_汇编_数据传送指令.md\":\"PY1RmkQj\",\"其他_八股_其他_汇编_程序设计综合.md\":\"CqsM9zoN\",\"其他_八股_其他_汇编_逻辑运算与移位指令.md\":\"B_-kKKiB\",\"其他_八股_其他_网安_网络安全.md\":\"COiOJXPx\",\"其他_八股_前端_css_单位.md\":\"DyaFOJT4\",\"其他_八股_前端_css_居中的方式.md\":\"rsk20pg5\",\"其他_八股_前端_html_文档声明.md\":\"CQQLsheK\",\"其他_八股_前端_html_替换元素.md\":\"D69yt3g4\",\"其他_八股_前端_html_语义化_seo_微格式.md\":\"DcyemF8i\",\"其他_八股_前端_html_页面可见性.md\":\"CFWJeBWr\",\"其他_八股_前端_事件循环_异步.md\":\"pX3ui26Y\",\"其他_八股_操作系统_存储管理.md\":\"BiNbZ62S\",\"其他_八股_操作系统_操作系统安全及虚拟化技术概述.md\":\"JHACDhW4\",\"其他_八股_操作系统_操作系统概述及基本概念.md\":\"D9Lo515v\",\"其他_八股_操作系统_文件系统.md\":\"Dtjdw_je\",\"其他_八股_操作系统_死锁.md\":\"zHFIU7qo\",\"其他_八股_操作系统_输入输出.md\":\"frvtHq-m\",\"其他_八股_操作系统_进程与线程.md\":\"DbHOm3Wq\",\"其他_八股_操作系统_面试八股.md\":\"CzgRxFHm\",\"其他_八股_数据库_log.md\":\"B-ybS9bR\",\"其他_八股_数据库_mysql的执行引擎.md\":\"CUp82kj5\",\"其他_八股_数据库_redis.md\":\"z8vp5n46\",\"其他_八股_数据库_sql语句的执行.md\":\"B0aqkw_M\",\"其他_八股_数据库_事务_事务的四大特性.md\":\"DWegFK6Q\",\"其他_八股_数据库_事务_事务的隔离级别.md\":\"CJpAB-SH\",\"其他_八股_数据库_慢查询.md\":\"C1IK6Wix\",\"其他_八股_数据库_索引失效的场景.md\":\"Ax0k9vQn\",\"其他_八股_数据库_进阶_窗口函数.md\":\"C_zDFJPI\",\"其他_八股_数据结构_二分法.md\":\"cV9m7f2a\",\"其他_八股_数据结构_二叉树.md\":\"DkYu-9Db\",\"其他_八股_数据结构_回溯.md\":\"CcyoEaKv\",\"其他_八股_数据结构_数组_蛇形填数.md\":\"sJgKru0T\",\"其他_八股_数据结构_滑动窗口最大值.md\":\"7EhHWPLR\",\"其他_八股_数据结构_背包_01背包.md\":\"Bm-yOyBt\",\"其他_八股_数据结构_链表_两两交换链表中的节点.md\":\"B8MvoYxB\",\"其他_八股_数据结构_链表_单链表.md\":\"BrcntfvU\",\"其他_八股_数据结构_链表_反转链表.md\":\"imXNe7Cp\",\"其他_八股_测开_bug.md\":\"DEH0Pngz\",\"其他_八股_测开_性能测试.md\":\"BIq1PtDn\",\"其他_八股_测开_测试的流程.md\":\"BDpHuwv1\",\"其他_八股_测开_测试的理解.md\":\"D0oj3MOT\",\"其他_八股_测开_软件测试.md\":\"DBQvBkbe\",\"其他_八股_测开_软件质量.md\":\"BbbVdNmM\",\"其他_八股_计网_cdn.md\":\"BBkFV3YX\",\"其他_八股_计网_cookie_session.md\":\"9lTHujdv\",\"其他_八股_计网_dns查询过程.md\":\"UEG8MFOS\",\"其他_八股_计网_http常见状态码.md\":\"FjHGrHsS\",\"其他_八股_计网_osi模型.md\":\"CQQrgYYo\",\"其他_八股_计网_url到页面展示.md\":\"CysFBpDy\",\"其他_八股_计网_传输层_tcp_udp.md\":\"CGN96CrC\",\"其他_八股_计网_应用层_http.md\":\"BwfPa-_I\",\"其他_八股_计网_应用层_http1.0各个版本.md\":\"Po_QFcD7\",\"其他_八股_计网_应用层_http_https.md\":\"CVNCJSvP\",\"其他_八股_计网_强缓存和协商缓存.md\":\"BCS9u_As\",\"其他_八股_计网_物理层_奈氏准则_香农公式.md\":\"LJ2m6SOu\",\"其他_面经_大疆.md\":\"7GCAKeVb\",\"其他_面经_差旅1号.md\":\"COJ0oCTe\",\"其他_面经_广州嘉为科技公司-python.md\":\"DKqZln1v\",\"其他_面经_得物.md\":\"Dh7JuSj9\",\"其他_面经_招商银行.md\":\"xRFKUhWx\",\"其他_面经_百度.md\":\"BNUT_qAS\",\"其他_项目_项目部署_vitepress_githubpages部署.md\":\"BVpDdxkG\",\"其他_项目_项目部署_vitepress_netlify部署.md\":\"Coqp4VTV\",\"其他_项目_项目部署_vitepress_nginx部署.md\":\"BAeOv9Kq\",\"其他_项目_项目部署_web.md\":\"BoGi1t8O\",\"前端_vue3_axios.md\":\"D33GJUpk\",\"前端_vue3_面试.md\":\"Ba2Ot3Rt\",\"前端_前端三件套_css_css3自定义属性.md\":\"D8gxja-i\",\"前端_前端三件套_css_css基础入门.md\":\"ndtMtB1o\",\"前端_前端三件套_css_flexbox布局.md\":\"THfIflcE\",\"前端_前端三件套_css_grid布局.md\":\"DxVJntk3\",\"前端_前端三件套_css_动画.md\":\"CFLVIA4-\",\"前端_前端三件套_css_媒体查询.md\":\"DOMiDDiY\",\"前端_前端三件套_css_属性.md\":\"CESPzocp\",\"前端_前端三件套_html_html基础.md\":\"DVzBORCM\",\"前端_前端三件套_js_dom操作.md\":\"DMHjLETt\",\"前端_前端三件套_js_js入门.md\":\"B5ZmIMru\",\"前端_前端三件套_js_属性描述符.md\":\"CbnoBHiZ\",\"前端_前端三件套_js_高阶函数.md\":\"xnE4baNa\",\"前端_前端三件套_实战案例_聊天页面.md\":\"Biaa-glg\",\"前端_前端三件套_面试_基本题.md\":\"CHZnvxX-\",\"工具_git_gitignore.md\":\"DoXDP0e-\",\"工具_git_git的基本使用.md\":\"DU6wlewG\",\"工具_git_同时推送gitee和github.md\":\"Cvg2MFU1\",\"测试_faker数据随机生成.md\":\"BasZvW7O\",\"测试_jenkins.md\":\"CFQxIQZz\",\"测试_pytest_pytest基础.md\":\"6gYMEMqz\",\"测试_pytest_yaml文件.md\":\"kC0gde-v\",\"测试_pytest_日志.md\":\"CXf5niRD\",\"测试_unittest.md\":\"DLCFrt8V\",\"测试_性能测试_基础概念.md\":\"DOav1Wqa\",\"爬虫_bs4解析.md\":\"DuOzYyCe\",\"爬虫_jsonpath解析.md\":\"Drhtc37w\",\"爬虫_scrapy.md\":\"D83vZHmx\",\"爬虫_selenium.md\":\"BhDk9UyV\",\"爬虫_xpath解析.md\":\"MjtoQ3qX\",\"爬虫_导论.md\":\"BiquNqIP\",\"爬虫_抓包.md\":\"BDJtadra\",\"爬虫_登录流程.md\":\"MPghsp8c\",\"环境搭建_docker_mysql.md\":\"Duy1yYHv\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"九问Blog\",\"description\":\"欢迎访问九问Blog！分享一些Python全栈开发以及爬虫技术，希望对你有所帮助\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/jiuwen567\"},{\"icon\":{\"svg\":\"<svg t=\\\"1724307958358\\\" class=\\\"icon\\\" viewBox=\\\"0 0 1024 1024\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" p-id=\\\"4234\\\" width=\\\"200\\\" height=\\\"200\\\"><path d=\\\"M512 0C230.4 0 0 230.4 0 512s230.4 512 512 512 512-230.4 512-512S793.6 0 512 0z m284.8 313.6c0 12.8-12.8 25.6-25.6 25.6H416c-41.6 0-76.8 35.2-76.8 76.8v243.2c0 12.8 12.8 25.6 25.6 25.6h240c41.6 0 76.8-35.2 76.8-76.8v-12.8c0-12.8-12.8-25.6-25.6-25.6H480c-12.8 0-25.6-12.8-25.6-25.6v-64c0-12.8 12.8-25.6 25.6-25.6h291.2c12.8 0 25.6 12.8 25.6 25.6v144c0 92.8-76.8 169.6-169.6 169.6H252.8c-12.8 0-25.6-12.8-25.6-25.6V412.8C227.2 310.4 310.4 224 416 224h355.2c12.8 0 25.6 12.8 25.6 25.6v64z\\\" fill=\\\"#B32225\\\" p-id=\\\"4235\\\"></path></svg>\"},\"link\":\"https://gitee.com/jiuwen567\"}],\"footer\":{\"message\":\"Released under the MIT License.\",\"copyright\":\"Copyright © 2024.8.15-present 九问.All Rights Reserved.\"},\"search\":{\"provider\":\"local\"},\"docFooter\":{\"prev\":\"上一篇\",\"next\":\"下一篇\"},\"returnToTopLabel\":\"回到顶部\",\"sidebarMenuLabel\":\"菜单\",\"darkModeSwitchLabel\":\"主题\",\"lightModeSwitchTitle\":\"切换到浅色模式\",\"darkModeSwitchTitle\":\"切换到深色模式\",\"nav\":[{\"text\":\"工具\",\"activeMatch\":\"/工具/\",\"link\":\"/工具/Git/同时推送Gitee和GitHub\"},{\"text\":\"Linux\",\"activeMatch\":\"/Linux/\",\"link\":\"/Linux/Linux基础入门\"},{\"text\":\"爬虫\",\"activeMatch\":\"/爬虫/\",\"link\":\"/爬虫/导论\"},{\"text\":\"测试\",\"activeMatch\":\"/测试/\",\"link\":\"/测试/faker数据随机生成\"},{\"text\":\"Python\",\"activeMatch\":\"/Python/\",\"link\":\"/Python/原理类/内存管理\"},{\"text\":\"Python框架\",\"activeMatch\":\"/Python框架/\",\"link\":\"/Python框架/Django/接口文档\"},{\"text\":\"其他\",\"activeMatch\":\"/其他/\",\"link\":\"/其他/八股/Linux\"},{\"text\":\"前端\",\"activeMatch\":\"/前端/\",\"link\":\"/前端/Vue3/axios\"},{\"text\":\"LLM\",\"activeMatch\":\"/LLM/\",\"link\":\"/LLM/LangChain/quick_start\"},{\"text\":\"环境搭建\",\"activeMatch\":\"/环境搭建/\",\"link\":\"/环境搭建/docker/mysql\"}],\"sidebar\":{\"/工具/\":[{\"text\":\"Git\",\"collapsed\":false,\"items\":[{\"text\":\"同时推送Gitee和GitHub\",\"link\":\"/工具/Git/同时推送Gitee和GitHub\"},{\"text\":\"Git的基本使用\",\"link\":\"/工具/Git/Git的基本使用\"},{\"text\":\"gitignore\",\"link\":\"/工具/Git/gitignore\"}]}],\"/Linux/\":[{\"text\":\"Linux基础入门\",\"link\":\"/Linux/Linux基础入门\"},{\"text\":\"虚拟机相关\",\"link\":\"/Linux/虚拟机相关\"},{\"text\":\"常用命令备忘\",\"link\":\"/Linux/常用命令备忘\"}],\"/爬虫/\":[{\"text\":\"导论\",\"link\":\"/爬虫/导论\"},{\"text\":\"抓包\",\"link\":\"/爬虫/抓包\"},{\"text\":\"bs4解析\",\"link\":\"/爬虫/bs4解析\"},{\"text\":\"xpath解析\",\"link\":\"/爬虫/xpath解析\"},{\"text\":\"登录流程\",\"link\":\"/爬虫/登录流程\"},{\"text\":\"scrapy\",\"link\":\"/爬虫/scrapy\"},{\"text\":\"selenium\",\"link\":\"/爬虫/selenium\"},{\"text\":\"jsonpath解析\",\"link\":\"/爬虫/jsonpath解析\"}],\"/测试/\":[{\"text\":\"faker数据随机生成\",\"link\":\"/测试/faker数据随机生成\"},{\"text\":\"Jenkins\",\"link\":\"/测试/Jenkins\"},{\"text\":\"unittest\",\"link\":\"/测试/unittest\"},{\"text\":\"性能测试\",\"collapsed\":false,\"items\":[{\"text\":\"基础概念\",\"link\":\"/测试/性能测试/基础概念\"}]},{\"text\":\"pytest\",\"collapsed\":false,\"items\":[{\"text\":\"pytest基础\",\"link\":\"/测试/pytest/pytest基础\"},{\"text\":\"yaml文件\",\"link\":\"/测试/pytest/yaml文件\"},{\"text\":\"日志\",\"link\":\"/测试/pytest/日志\"}]}],\"/Python/\":[{\"text\":\"原理类\",\"collapsed\":false,\"items\":[{\"text\":\"内存管理\",\"link\":\"/Python/原理类/内存管理\"},{\"text\":\"单例模式\",\"link\":\"/Python/原理类/单例模式\"},{\"text\":\"多进程多线程协程\",\"link\":\"/Python/原理类/多进程多线程协程\"},{\"text\":\"深浅拷贝\",\"link\":\"/Python/原理类/深浅拷贝\"},{\"text\":\"自省\",\"link\":\"/Python/原理类/自省\"},{\"text\":\"迭代器和生成器\",\"link\":\"/Python/原理类/迭代器和生成器\"},{\"text\":\"闭包和装饰器\",\"link\":\"/Python/原理类/闭包和装饰器\"},{\"text\":\"高阶函数\",\"link\":\"/Python/原理类/高阶函数\"},{\"text\":\"魔法方法\",\"link\":\"/Python/原理类/魔法方法\"},{\"text\":\"鸭子类型\",\"link\":\"/Python/原理类/鸭子类型\"},{\"text\":\"依赖注入\",\"link\":\"/Python/原理类/依赖注入\"}]},{\"text\":\"工具类\",\"collapsed\":false,\"items\":[{\"text\":\"logging\",\"link\":\"/Python/工具类/logging\"}]},{\"text\":\"基础\",\"collapsed\":false,\"items\":[{\"text\":\"练习题\",\"link\":\"/Python/基础/练习题\"}]}],\"/前端/\":[{\"text\":\"Vue3\",\"collapsed\":false,\"items\":[{\"text\":\"axios\",\"link\":\"/前端/Vue3/axios\"},{\"text\":\"面试\",\"link\":\"/前端/Vue3/面试\"}]},{\"text\":\"前端三件套\",\"collapsed\":false,\"items\":[{\"text\":\"HTML\",\"collapsed\":false,\"items\":[{\"text\":\"HTML基础\",\"link\":\"/前端/前端三件套/HTML/HTML基础\"}]},{\"text\":\"CSS\",\"collapsed\":false,\"items\":[{\"text\":\"css3自定义属性\",\"link\":\"/前端/前端三件套/CSS/css3自定义属性\"},{\"text\":\"css基础入门\",\"link\":\"/前端/前端三件套/CSS/css基础入门\"},{\"text\":\"flexbox布局\",\"link\":\"/前端/前端三件套/CSS/flexbox布局\"},{\"text\":\"grid布局\",\"link\":\"/前端/前端三件套/CSS/grid布局\"},{\"text\":\"动画\",\"link\":\"/前端/前端三件套/CSS/动画\"},{\"text\":\"媒体查询\",\"link\":\"/前端/前端三件套/CSS/媒体查询\"},{\"text\":\"属性\",\"link\":\"/前端/前端三件套/CSS/属性\"}]},{\"text\":\"js\",\"collapsed\":false,\"items\":[{\"text\":\"DOM操作\",\"link\":\"/前端/前端三件套/js/DOM操作\"},{\"text\":\"js入门\",\"link\":\"/前端/前端三件套/js/js入门\"},{\"text\":\"属性描述符\",\"link\":\"/前端/前端三件套/js/属性描述符\"},{\"text\":\"高阶函数\",\"link\":\"/前端/前端三件套/js/高阶函数\"}]},{\"text\":\"面试\",\"collapsed\":false,\"items\":[{\"text\":\"基本题\",\"link\":\"/前端/前端三件套/面试/基本题\"}]},{\"text\":\"实战案例\",\"collapsed\":false,\"items\":[{\"text\":\"聊天页面\",\"link\":\"/前端/前端三件套/实战案例/聊天页面\"}]}]}],\"/Python框架/\":[{\"text\":\"Django\",\"collapsed\":false,\"items\":[{\"text\":\"接口文档\",\"link\":\"/Python框架/Django/接口文档\"},{\"text\":\"熟悉流程\",\"collapsed\":false,\"items\":[{\"text\":\"部署博客\",\"link\":\"/Python框架/Django/熟悉流程/部署博客\"}]},{\"text\":\"4-1环境搭建\",\"link\":\"/Python框架/Django/4-1环境搭建\"},{\"text\":\"4-2settings配置\",\"link\":\"/Python框架/Django/4-2settings配置\"},{\"text\":\"4-3路由定义与使用\",\"link\":\"/Python框架/Django/4-3路由定义与使用\"},{\"text\":\"4-4请求与响应\",\"link\":\"/Python框架/Django/4-4请求与响应\"},{\"text\":\"4-5session_cookie\",\"link\":\"/Python框架/Django/4-5session_cookie\"},{\"text\":\"4-6类视图\",\"link\":\"/Python框架/Django/4-6类视图\"},{\"text\":\"4-7模板引擎\",\"link\":\"/Python框架/Django/4-7模板引擎\"},{\"text\":\"虚拟环境\",\"link\":\"/Python框架/Django/虚拟环境\"}]},{\"text\":\"Flask\",\"collapsed\":false,\"items\":[{\"text\":\"start\",\"link\":\"/Python框架/Flask/start\"},{\"text\":\"Flask-wtf&wtfforms\",\"link\":\"/Python框架/Flask/Flask-wtf&wtfforms\"},{\"text\":\"Flask-SQLAlchemy\",\"link\":\"/Python框架/Flask/Flask-SQLAlchemy\"}]}],\"/其他/\":[{\"text\":\"面经\",\"collapsed\":false,\"items\":[{\"text\":\"大疆\",\"link\":\"/其他/面经/大疆\"},{\"text\":\"差旅1号\",\"link\":\"/其他/面经/差旅1号\"},{\"text\":\"广州嘉为科技公司-python\",\"link\":\"/其他/面经/广州嘉为科技公司-python\"},{\"text\":\"得物\",\"link\":\"/其他/面经/得物\"},{\"text\":\"招商银行\",\"link\":\"/其他/面经/招商银行\"},{\"text\":\"百度\",\"link\":\"/其他/面经/百度\"}]},{\"text\":\"八股\",\"collapsed\":false,\"items\":[{\"text\":\"Linux\",\"link\":\"/其他/八股/Linux\"},{\"text\":\"前端\",\"collapsed\":false,\"items\":[{\"text\":\"事件循环&异步\",\"link\":\"/其他/八股/前端/事件循环&异步\"},{\"text\":\"HTML\",\"collapsed\":false,\"items\":[{\"text\":\"文档声明\",\"link\":\"/其他/八股/前端/HTML/文档声明\"},{\"text\":\"替换元素\",\"link\":\"/其他/八股/前端/HTML/替换元素\"},{\"text\":\"语义化&SEO&微格式\",\"link\":\"/其他/八股/前端/HTML/语义化&SEO&微格式\"},{\"text\":\"页面可见性\",\"link\":\"/其他/八股/前端/HTML/页面可见性\"}]},{\"text\":\"CSS\",\"collapsed\":false,\"items\":[{\"text\":\"单位\",\"link\":\"/其他/八股/前端/CSS/单位\"},{\"text\":\"居中的方式\",\"link\":\"/其他/八股/前端/CSS/居中的方式\"}]}]},{\"text\":\"数据库\",\"collapsed\":false,\"items\":[{\"text\":\"log\",\"link\":\"/其他/八股/数据库/log\"},{\"text\":\"mysql的执行引擎\",\"link\":\"/其他/八股/数据库/mysql的执行引擎\"},{\"text\":\"redis\",\"link\":\"/其他/八股/数据库/redis\"},{\"text\":\"sql语句的执行\",\"link\":\"/其他/八股/数据库/sql语句的执行\"},{\"text\":\"慢查询\",\"link\":\"/其他/八股/数据库/慢查询\"},{\"text\":\"索引失效的场景\",\"link\":\"/其他/八股/数据库/索引失效的场景\"},{\"text\":\"事务\",\"collapsed\":false,\"items\":[{\"text\":\"事务的四大特性\",\"link\":\"/其他/八股/数据库/事务/事务的四大特性\"},{\"text\":\"事务的隔离级别\",\"link\":\"/其他/八股/数据库/事务/事务的隔离级别\"}]},{\"text\":\"进阶\",\"collapsed\":false,\"items\":[{\"text\":\"窗口函数\",\"link\":\"/其他/八股/数据库/进阶/窗口函数\"}]}]},{\"text\":\"测开\",\"collapsed\":false,\"items\":[{\"text\":\"bug\",\"link\":\"/其他/八股/测开/bug\"},{\"text\":\"性能测试\",\"link\":\"/其他/八股/测开/性能测试\"},{\"text\":\"测试的流程\",\"link\":\"/其他/八股/测开/测试的流程\"},{\"text\":\"测试的理解\",\"link\":\"/其他/八股/测开/测试的理解\"},{\"text\":\"软件测试\",\"link\":\"/其他/八股/测开/软件测试\"},{\"text\":\"软件质量\",\"link\":\"/其他/八股/测开/软件质量\"}]},{\"text\":\"数据结构\",\"collapsed\":false,\"items\":[{\"text\":\"二分法\",\"link\":\"/其他/八股/数据结构/二分法\"},{\"text\":\"二叉树\",\"link\":\"/其他/八股/数据结构/二叉树\"},{\"text\":\"回溯\",\"link\":\"/其他/八股/数据结构/回溯\"},{\"text\":\"滑动窗口最大值\",\"link\":\"/其他/八股/数据结构/滑动窗口最大值\"},{\"text\":\"数组\",\"collapsed\":false,\"items\":[{\"text\":\"蛇形填数\",\"link\":\"/其他/八股/数据结构/数组/蛇形填数\"}]},{\"text\":\"背包\",\"collapsed\":false,\"items\":[{\"text\":\"01背包\",\"link\":\"/其他/八股/数据结构/背包/01背包\"}]},{\"text\":\"链表\",\"collapsed\":false,\"items\":[{\"text\":\"两两交换链表中的节点\",\"link\":\"/其他/八股/数据结构/链表/两两交换链表中的节点\"},{\"text\":\"单链表\",\"link\":\"/其他/八股/数据结构/链表/单链表\"},{\"text\":\"反转链表\",\"link\":\"/其他/八股/数据结构/链表/反转链表\"}]}]},{\"text\":\"计网\",\"collapsed\":false,\"items\":[{\"text\":\"CDN\",\"link\":\"/其他/八股/计网/CDN\"},{\"text\":\"cookie&session\",\"link\":\"/其他/八股/计网/cookie&session\"},{\"text\":\"DNS查询过程\",\"link\":\"/其他/八股/计网/DNS查询过程\"},{\"text\":\"http常见状态码\",\"link\":\"/其他/八股/计网/http常见状态码\"},{\"text\":\"OSI模型\",\"link\":\"/其他/八股/计网/OSI模型\"},{\"text\":\"url到页面展示\",\"link\":\"/其他/八股/计网/url到页面展示\"},{\"text\":\"强缓存和协商缓存\",\"link\":\"/其他/八股/计网/强缓存和协商缓存\"},{\"text\":\"传输层\",\"collapsed\":false,\"items\":[{\"text\":\"TCP&UDP\",\"link\":\"/其他/八股/计网/传输层/TCP&UDP\"}]},{\"text\":\"物理层\",\"collapsed\":false,\"items\":[{\"text\":\"奈氏准则&香农公式\",\"link\":\"/其他/八股/计网/物理层/奈氏准则&香农公式\"}]},{\"text\":\"应用层\",\"collapsed\":false,\"items\":[{\"text\":\"http&https\",\"link\":\"/其他/八股/计网/应用层/http&https\"},{\"text\":\"http\",\"link\":\"/其他/八股/计网/应用层/http\"},{\"text\":\"http1.0各个版本\",\"link\":\"/其他/八股/计网/应用层/http1.0各个版本\"}]}]},{\"text\":\"操作系统\",\"collapsed\":false,\"items\":[{\"text\":\"存储管理\",\"link\":\"/其他/八股/操作系统/存储管理\"},{\"text\":\"操作系统安全及虚拟化技术概述\",\"link\":\"/其他/八股/操作系统/操作系统安全及虚拟化技术概述\"},{\"text\":\"操作系统概述及基本概念\",\"link\":\"/其他/八股/操作系统/操作系统概述及基本概念\"},{\"text\":\"文件系统\",\"link\":\"/其他/八股/操作系统/文件系统\"},{\"text\":\"死锁\",\"link\":\"/其他/八股/操作系统/死锁\"},{\"text\":\"输入输出\",\"link\":\"/其他/八股/操作系统/输入输出\"},{\"text\":\"进程与线程\",\"link\":\"/其他/八股/操作系统/进程与线程\"},{\"text\":\"面试八股\",\"link\":\"/其他/八股/操作系统/面试八股\"}]},{\"text\":\"其他\",\"collapsed\":false,\"items\":[{\"text\":\"汇编\",\"collapsed\":false,\"items\":[{\"text\":\"串指令\",\"link\":\"/其他/八股/其他/汇编/串指令\"},{\"text\":\"前置知识\",\"link\":\"/其他/八股/其他/汇编/前置知识\"},{\"text\":\"宏汇编\",\"link\":\"/其他/八股/其他/汇编/宏汇编\"},{\"text\":\"寄存器\",\"link\":\"/其他/八股/其他/汇编/寄存器\"},{\"text\":\"寻址方式\",\"link\":\"/其他/八股/其他/汇编/寻址方式\"},{\"text\":\"数据传送指令\",\"link\":\"/其他/八股/其他/汇编/数据传送指令\"},{\"text\":\"程序设计综合\",\"link\":\"/其他/八股/其他/汇编/程序设计综合\"},{\"text\":\"逻辑运算与移位指令\",\"link\":\"/其他/八股/其他/汇编/逻辑运算与移位指令\"}]},{\"text\":\"网安\",\"collapsed\":false,\"items\":[{\"text\":\"网络安全\",\"link\":\"/其他/八股/其他/网安/网络安全\"}]}]}]},{\"text\":\"项目\",\"collapsed\":false,\"items\":[{\"text\":\"项目部署\",\"collapsed\":false,\"items\":[{\"text\":\"web\",\"link\":\"/其他/项目/项目部署/web\"},{\"text\":\"vitepress\",\"collapsed\":false,\"items\":[{\"text\":\"GithubPages部署\",\"link\":\"/其他/项目/项目部署/vitepress/GithubPages部署\"},{\"text\":\"netlify部署\",\"link\":\"/其他/项目/项目部署/vitepress/netlify部署\"},{\"text\":\"Nginx部署\",\"link\":\"/其他/项目/项目部署/vitepress/Nginx部署\"}]}]}]}],\"/LLM/\":[{\"text\":\"LangChain\",\"collapsed\":false,\"items\":[{\"text\":\"quick_start\",\"link\":\"/LLM/LangChain/quick_start\"},{\"text\":\"Prompt\",\"link\":\"/LLM/LangChain/Prompt\"},{\"text\":\"Model\",\"link\":\"/LLM/LangChain/Model\"},{\"text\":\"OutputParser\",\"link\":\"/LLM/LangChain/OutputParser\"},{\"text\":\"LCEL表达式与Runnable可运行协议\",\"link\":\"/LLM/LangChain/LCEL表达式与Runnable可运行协议\"}]}],\"/环境搭建/\":[{\"text\":\"docker\",\"collapsed\":false,\"items\":[{\"text\":\"mysql\",\"link\":\"/环境搭建/docker/mysql\"}]}]}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
    
  </body>
</html>